package com.cskaoyan.javase.oop3._0abstract._0introduction._0old;
/**
 * 抽象类的引入
 * 以下猫狗继承案例，是一个非常基础的继承语法的代码。思考一下Animal类的继承体系，有什么问题吗？
 * 从以下两个角度分析：
 * 1. 从代码角度上，有没有冗余代码？
 *      Animal类当中的shout方法是始终没有被调用的,它的作用是被子类继承和重写
 *      它其实不需要方法体.
 *
 * 2. 从设计角度上，在这个案例中，会存在一个`动物`对象吗？
 *      Animal是一个抽象的概念,用来表示全体动物,它不是一个具体的概念,也不需要创建它的对象
 *      而且既然它是抽象概念,也没有办法描述它的行为
 *
 * 综上所述:
 *      1.Animal类当中的shout方法应该没有方法体
 *      2.Animal类不应该创建对象,它的作用就是被继承,就是用来创建子类的
 *
 *
 * 
 * @since 10:05
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}
class Animal {
    public void shout() {
        System.out.println("动物叫");
    }
}
class Cat extends Animal {
    @Override
    public void shout() {
        System.out.println("猫叫");
    }
}
class Dog extends Animal {
    @Override
    public void shout() {
        System.out.println("狗叫");
    }
}